(function ($, feedback, window, document) {

    /*************** 环信配置开始 ****************/
        //以后信息更改后，需卸载 “调试 app” 重新调用运行
    var APP_KEY = 'dcloudio#mui';
    var CUSTOM_ID = 'customer';
    /*************** 环信配置结束 ****************/

        //一组 “常量”
    var PASSWORD = 'pass01!';
    var LOCAL_STORE_KEY = 'mui://user';
    var USER_PREFIX = 'mui-user-';


    /**
     * 生成一个 IM 用户名
     **/
    var createUsername = function () {
        return USER_PREFIX + (new Date()).getTime();
    };

    /**
     * 获取用户，如果在本地存储中已有用户则直接返回。
     * 否则，注册新的用户
     **/
    feedback.getUser = function (callback) {
        var storeUserText = localStorage.getItem(LOCAL_STORE_KEY);
        if (storeUserText) {
            if (callback) callback(JSON.parse(storeUserText));
            return;
        }
        var newUsername = createUsername();
        Easemob.im.Helper.registerUser({
            username: newUsername,
            password: PASSWORD,
            appKey: APP_KEY,
            success: function (result) {
                var userInfo = {
                    username: newUsername,
                    password: PASSWORD
                };
                localStorage.setItem(LOCAL_STORE_KEY, JSON.stringify(userInfo));
                if (callback) callback(userInfo);
            },
            error: function (e) {
                plus.nativeUI.toast(e.message);
            }
        });
    };

    /**
     * 登录环信息服务器
     **/
    feedback.login = function (callback) {
        feedback.getUser(function (user) {
            var conn = new Easemob.im.Connection();
            conn.init({
                onOpened: function () {
                    //alert("成功登录");
                    conn.setPresence();
                    if (callback) callback(user, conn);
                }
            });
            conn.open({
                user: user.username,
                pwd: user.password,
                appKey: APP_KEY
            });
        });
    };

    /**
     * 发送反馈信息
     **/
    feedback.send = function (content, callback) {
        feedback.login(function (user, conn) {
            //发送文本消息
            var msgText = '问题:' + content.question;
            if (content.contact) {
                msgText += '; 联系方式:' + content.contact + ';'
            }
            conn.sendTextMessage({
                to: CUSTOM_ID,
                msg: msgText,
                type: "chat"
            });
            //如果没有截图
            if (!content.images || content.images.length < 1) {
                if (callback) callback();
                return;
            }
            //如果有截图
            var sendImageCount = 0;
            var hasError = false;
            content.images.forEach(function (fileInputId) {
                //alert(fileInputId)
                conn.sendPicture({
                    fileInputId: fileInputId,
                    to: CUSTOM_ID,
                    onFileUploadError: function (error) {
                        //处理图片上传失败
                        alert(JSON.stringify(error));
                        hasError = true;
                    },
                    onFileUploadComplete: function (data) {
                        //处理图片上传成功，如本地消息显示
                        sendImageCount++;
                        if (!hasError && sendImageCount >= content.images.length) {
                            if (callback) callback();
                        }
                    }
                });
            });
            //--
        });
    };

})(mui, window.feedback = {}, window, document);